package com.eclink.iot.tcp.virtualdevice.message;

import com.eclink.iot.tcp.virtualdevice.util.TimeUtil;
import lombok.Getter;
import lombok.Setter;

import java.util.ArrayList;
import java.util.List;

@Getter
public class RfidMessage extends Message {

    private final byte code = 34;

    // EPC
    @Setter
    private String epc;

    public RfidMessage() {
    }

    private byte[] hexStringToBytes(String hexString) {

        if (hexString == null || hexString.isEmpty()) {
            return new byte[0];
        }

        byte[] bytes = new byte[hexString.length() / 2];
        for (int i = 0; i < hexString.length(); i += 2) {
            // 提取当前字符对应的两个16位数字字符
            String digitPair = hexString.substring(i, i + 2);
            // 将16位数字字符串转换为整数，再转换为字节
            bytes[i / 2] = (byte) Integer.parseInt(digitPair, 16);
        }
        return bytes;
    }

    public List<Byte> getDataBytes() {

        // 状态
        byte status = 0;
        List<Byte> list = new ArrayList<Byte>();

        // 5
        list.add(status);
        // 6
        list.add((byte)0);

        // 7
        list.add((byte) (this.epc.length() * 2));
        // 8
        list.add((byte) 0);

        // 9
        byte[] epcBytes = hexStringToBytes(this.epc);
        for(byte b : epcBytes) {
            list.add(b);
        }

        return list;
    }

}
